package com.ruoyi.common.utils;

import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Date;

public class DateUtil {

    /**
     * 将日期对象转换为指定格式的字符串
     *
     * @param date   要格式化的日期对象
     * @param format 日期格式，例如："yyyyMMddHHmmss"
     * @return 格式化后的字符串表示形式
     */
    public static String formatDateToString(Date date, String format) {
        if (date == null || format == null || format.isEmpty()) {
            throw new IllegalArgumentException("The date and format must not be null or empty");
        }
        LocalDateTime localDateTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
        return localDateTime.format(formatter);
    }

    /**
     * 增加或减少给定日期的时间量
     *
     * @param date  需要调整的日期
     * @param minutes 分钟数，可以是正数也可以是负数
     * @return 返回调整后的新日期
     */
    public static Date addMinutesToDate(Date date, int minutes) {
        if (date == null) {
            throw new IllegalArgumentException("The date must not be null");
        }
        LocalDateTime localDateTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
        LocalDateTime adjustedDateTime = localDateTime.plusMinutes(minutes);
        return Date.from(adjustedDateTime.atZone(ZoneId.systemDefault()).toInstant());
    }

}